package behavior.template;

public class BarracksTemplateImpl implements BarracksTemplate {

    @Override
   public final void buildSoliderstemplate() {

        // 投入金钱
        investMoney();

        // 投入粮食
        inputGrain();

        // 钩子方法
        hook();

        // 生产兵器
        weaponProduction();

        // 招募士兵
        recruitSoldiers();

        // 兵种训练
        serviceTraining();

        // 钩子方法2
        hook2();


    }

    /**
     * 钩子
     */
    @Override
    public void hook() {
    }

    @Override
    public void hook2() {

    }

    /**
     * 投入金钱
     */
    @Override
    public void investMoney() {
        System.out.println("投入金钱");
    }

    /**
     * 投入粮食
     */
    @Override
    public void inputGrain() {
        System.out.println("投入粮食");
    }

    /**
     * 生产兵器
     */
    @Override
    public void weaponProduction() {
       throw new RuntimeException("生产兵器需要子类的实现");
    }

    /**
     * 招募士兵
     */
    @Override
    public void recruitSoldiers() {
        throw new RuntimeException("招募士兵需要子类的实现");
    }

    @Override
    public void serviceTraining() {
        throw new RuntimeException("兵种训练需要子类的实现");
    }
}
